/*
 *  PlateauGL.h
 *  hellogl
 *
 *  Created by David Bullado on 28/10/08.
 *  Copyright 2008 __MyCompanyName__. All rights reserved.
 *
 */

#ifndef __PLATEAUGL_H__
#define __PLATEAUGL_H__
#include <iostream>
#include "Position.h"

class PlateauGL {
	private :
	GLuint list ;	// Adresse openGL de l'objet "plateau"
	bool dessine ; // Si le plateau a été dessiné
	
	bool dessineCases;
	bool dessineCasesSelected ;
	

	std::list <Position> listPositions ;
	
	GLuint listCases [64] ;
	GLuint listCasesSelected [64] ;
	
	template <unsigned int I> inline void drawCase ();
	template <unsigned int I> inline void deleteCase ();
	inline void deleteCases () ;
	void makeCases () ;
	void makeCasesSelected () ;

	
	public :
 	void drawPlateau () ;	// Dessine le plateau
	PlateauGL () ;
	~PlateauGL () ;
	void make () ;	// Génère l'objet OpenGL "Plateau"(fait appel à drawPlateau), et retourne l'adresse dans plateauGen
	void draw() ; // Dessine l'objet Plateau avec un appel de void glCallList( GLuint list )
	void drawCases();
	void drawPicking();
	void drawCasesPicking();
	void drawCasesSelected(const std::list<Position> & positions) ;
};

#endif

